package admrouter

import (
	"github.com/gin-gonic/gin"
	"yundian/internel/app/handlers/pcl/admin/authhandler"
	"yundian/internel/app/handlers/pcl/admin/optionshandler"
	"yundian/internel/app/handlers/pcl/zmsc/zmwxapplet"
	"yundian/internel/app/middlewares"
	"yundian/internel/pkg/dingo"
)

func InitPermissionRouter() dingo.ApiRouter {
	return func(g *gin.RouterGroup) {

		// API 的操作权限 颗粒度(新增、查询、详情、修改、删除、导入、导出、启用、禁用)
		g.GET("/actions", authhandler.GetActionListHandler)

		// 管理员 用户相关 API
		u := g.Group("user")
		u.POST("upload", zmwxapplet.UploadMeiTuanBanner)

		// 用户角色相关 API
		r := g.Group("role")
		r.Use(middlewares.JwtAuthMiddleware)                    // 需要登录
		r.GET("", authhandler.HandleGetRoleList)                // 查询 角色列表
		r.GET("no-pager", authhandler.HandleGetRoleListNoPager) // 查询 所有角色
		r.GET("lst", authhandler.HandleGetRoleListByIsAdmin)    // 查询 所有角色
		r.GET("staff", authhandler.HandleGetStaffRoleList)      // 查询 所有角色
		r.GET("detail/:id", authhandler.HandleGetRoleInfo)      // 查询 角色详情
		r.POST("", authhandler.HandleInsertRole)                // 新增 角色
		r.PUT("status", authhandler.HandleUpdateRoleStatus)     // 更新 角色状态
		r.PUT("", authhandler.HandleUpdateRole)                 // 更新 角色
		r.DELETE("", authhandler.HandleDeleteRole)              // 删除 角色

		// 权限相关 API
		p := g.Group("permission")
		p.Use(middlewares.JwtAuthMiddleware)                          // 需要登录授权
		p.GET("", authhandler.HandleGetPermissionList)                // 获取权限列表
		p.GET("no-pager", authhandler.HandleGetPermissionListNoPager) // 获取所有权限列表
		p.GET("role-id", authhandler.HandleGetPermissionListRoleId)   // 获取角色的权限列表
		p.GET("detail/:id", authhandler.HandleGetPermission)          // 获取 权限详情
		p.POST("", authhandler.HandleInsertPermission)                // 新增 权限
		p.PUT("", authhandler.HandleUpdatePermission)                 // 修改 权限
		p.DELETE("", authhandler.HandleDeletePermission)              // 删除 权限

		// 站点配置 API
		o := g.Group("options")
		o.Use(middlewares.JwtAuthMiddleware)       // 需要登录授权
		o.GET("", optionshandler.BrokerageOptions) // 更新支付配置

	}
}
